#ifndef _GUI_CONTROLLER_H
#define _GUI_CONTROLLER_H

#include <SFGUI/SFGUI.hpp>
#include <SFML/Graphics.hpp>

class City;
class Camera;
class GuiTool;
class GuiToolbar;
class GuiInfoBar;
class GuiMapInterface;

// Holds wrappers to model's objects' functions
class GuiController
{
    public:
    GuiController();

    void init(sf::RenderWindow* window, sfg::Desktop &desktop, Camera* camera, City* city);
    void update(double dt);

    static GuiController* get();

    void setTool(const GuiTool& tool);

    private:
    static GuiController* guiCtrl;

    sfg::Desktop* desktop;

    City* city;
    Camera* camera;

    GuiToolbar* toolbar;
    GuiInfoBar* infobar;
    GuiMapInterface* mapInterface;
};

typedef void (GuiController::* GuiCallback)(void);

#endif // _GUI_CONTROLLER_H
